iT邦幫忙

2022 iThome 鐵人賽

DAY 14
0
Modern Web

.NET教我做人系列 第 14

Day14 路由給了我方向

  • 分享至 

  • xImage
  •  

Day14 路由給了我方向

大家好啊~昨天我們講了middleware在ASP.NET CORE上扮演的角色後,再來想要來說說另一個更重要的東西「路由」,路由是甚麼呢,你可以想像我們平常在路上是不是會看到很多路標,當我們假如要去台北火車站時,我們通常會看特定的路標才會到北車,或者現在要去西門町,我們也是跟著路標才會到西門町,所以路由就有點像是路標的功能,而這些路標的就是由這些開發的人員來設定

在ASP.NET COER中,寫路由的方式主要可以分為兩種 傳統路由屬性路由,這兩種方式都有各自使用的時候,比如傳統路由蠻常會使用在MVC中,主要用來搭配Controller和View來做使用,另外屬性路由就比較常搭配REST API來使用

傳統路由

傳統路由的使用方式很簡單,想到我們昨天說的中介軟體,它裡面就有一個很好的方法MapControllerRoute可以用來建立單一路由
這裡我們先將路由的命名為default,路由的範本是"{controller=Home}/{action=Index}/{id?}"

app.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");

在MapControllerRoute裡name表達的意思就是這路由的名稱而已,較重要的地方就是patternpatterncontrolleraction後面加等號(=)表示預設的值id後面加個問號(?)則表optional(就是可給可不給)

其中這裡的controlleraction都只是預設值,預設和選擇性路由參數不一定要全部出現在URL才算相符,換句話說如果有另一個URL路徑是/Welcome/home/3 也是可以找到的,最主要是在寫Controller的時候要注意,再說除了這種寫法,也是可以把路徑給寫死(不建議)

再來我們先創一個controller的cs檔

using Microsoft.AspNetCore.Mvc;

namespace WepApi.Controllers
{
    public class WelcomeController : Controller
    {
        public IActionResult Help(int id)
        { 
            return Ok(new {hello = id});
        }
    }
}

這裡我們記得繼承Controller,不然就沒有路由的公用了,再來class的命名也會影響路由的命名像這裡就是以WelcomeController,所以在剛才的controller的參數就會是Welcome,另外action的部分就會跟class裡的方式命名有關係,這裡就看到Help就會是action的部分,另外id就是一方式的參數來調整

屬性路由

屬性路由的放式可以說簡化了傳統路由並且都有路由的功能,使用的方法也很簡單,最一開始也是要引用特定的中介軟體MapControllers()

app.MapControllers()

通常如果你的專案使有用到REST API的話使用率使很高,但傳統路由的方式也是可以用,但推薦如果是用REST API的話就使用屬性路由

哪接下來的話就是要到各自的controller來使用,下面是我們可以用的方式,主要透過[Route]來寫我們的路由

[Route("/welcome/hello")] // 絕對路徑
[Route("[controller]/[action]")] // 特別的路由名稱

寫出完整的路由應該也不用多說,這裡比較要注意的地方應該是特別的路由方式,常見的保留名稱有actionareacontrollerhandlerpage,其中比較常用的應該是controlleraction,用法跟傳統路由的方式很像

再來在剛介紹時有提到REST API,這種網頁風格常見的方法有GET、POST、PUT、DELETE、PATCH,由於ASP.NET 人非常好就有先提供幾種方式,讓我們可以達到RESU API的網頁風格,下面是官網提供的HTTP 動詞範本,這些範本的使用會在後面提到這裡就不先介紹了

  • [HttpGet]
  • [HttpPost]
  • [HttpPut]
  • [HttpDelete]
  • [HttpHead]
  • [HttpPatch]

最後今天就先介紹了路由的使用方式,希望大家都可以運用的很熟悉,哪我們就明天再見了~拜拜

參考資料:
https://learn.microsoft.com/zh-tw/aspnet/core/mvc/controllers/routing?view=aspnetcore-6.0
https://ithelp.ithome.com.tw/articles/10203560


上一篇
Day13 靜態檔案(Static Files)
下一篇
Day15 出了問題怎麼辦
系列文
.NET教我做人30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言